import java.util.*;

/**
 * @Author: code.rookie
 * @ClassName: SubarraySumEqualsK
 * @Date: 2021/10/13 4:47 下午
 * @Version: 1
 * @Description 560. 和为 K 的子数组
 */
public class SubarraySumEqualsK {

    public static void main(String[] args) {
        int[] nums = {0,0,0};
        Arrays.sort(nums);
        List<List<Integer>> result = new ArrayList();
        for (int i = 0; i < nums.length; i++) {
            if (i > 0 && nums[i] == nums[i - 1]) {
                continue;
            }
            List<int[]> list = twoSum(nums, i + 1, -nums[i]);
            for (int[] ints : list) {
                List<Integer> ans = new ArrayList<>();
                ans.add(nums[i]);
                ans.add(ints[0]);
                ans.add(ints[1]);
                result.add(ans);
            }
        }
        System.out.println(result);
//        int k = 2;
//        int count = 0;
//        int[] pres = new int[nums.length + 1];
//        for(int i=0; i<nums.length; i++){
//            pres[i+1] = nums[i]+ pres[i];
//        }
//        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
//        map.put(0, 1);
//        for (int i = 1; i < pres.length; i++) {
//            int num = pres[i] - k;
//            if (map.containsKey(num)) {
//                count += map.get(num);
//            }
//            map.put(pres[i], map.getOrDefault(pres[i], 0) + 1);
//        }
//        System.out.println(count);
    }

    private static List<int[]> twoSum(int[] nums, int stat, int target) {
        System.out.println(0);
        List<int[]> result = new ArrayList();
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = stat; i < nums.length; i++) {
            if (i > stat && nums[i] == nums[i - 1]) {
                System.out.println(1);
                continue;
            }
            int sum = target - nums[i];
            if (map.containsKey(sum)) {
                result.add(new int[]{nums[i], nums[map.get(sum)]});
            }
            map.put(nums[i], i);
        }

        return result;
    }
}
